//package ws.rest.tasks;
//
//import java.util.Collection;
//import java.util.List;
//import java.util.Map;
//
//import javax.ws.rs.Consumes;
//import javax.ws.rs.DELETE;
//import javax.ws.rs.GET;
//import javax.ws.rs.POST;
//import javax.ws.rs.PUT;
//import javax.ws.rs.Path;
//import javax.ws.rs.PathParam;
//import javax.ws.rs.Produces;
//import javax.ws.rs.WebApplicationException;
//import javax.ws.rs.core.Context;
//import javax.ws.rs.core.MediaType;
//import javax.ws.rs.core.MultivaluedMap;
//import javax.ws.rs.core.Response;
//import javax.ws.rs.core.UriInfo;
//
//import org.apache.wink.server.utils.LinkBuilders;
//import org.json.JSONArray;
//import org.json.JSONException;
//import org.json.JSONObject;
//
//import ws.rest.check.base.BaseResourceImpl;
//import ws.rest.check.validator.CheckItem;
//import ws.rest.check.validator.CheckResult;
//
//@Path("validate")
//public class TasksResource {
//
//    private static final String TASK = "validate";
//    private static final String ITEM_PATH = "{validate}";
//    private static TasksResource instance = null;
//    
//    public synchronized static TasksResource getInstance(){
//    	if(instance==null)
//    		return new TasksResource();
//    	return instance;
//    }
//    
//    @GET
//    @Produces( { MediaType.APPLICATION_JSON })
//    public JSONArray getTasks() {
//    	JSONArray result = new JSONArray();
//    	Collection<Task> tasks = TaskManager.getInstance().getTasks();
//    	for(Task task:tasks){
//            try {
//                result.put(createJSONObject(task));
//            } catch (JSONException e) {
//                e.printStackTrace();
//                throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
//            }
//    	}
//    	return result;
//    }
//
//    @Path(ITEM_PATH)
//    @GET
//    @Produces( { MediaType.APPLICATION_JSON })
//    public JSONObject getCheck(@Context LinkBuilders link, @Context UriInfo uri,
//            @PathParam(TASK) String taskId) {
//        JSONObject result;
//        Task task = TaskManager.getInstance().getTask(taskId);
//
//        if (task == null) {
//            throw new WebApplicationException(Response.Status.NOT_FOUND);
//        }
//
//        try {
//            result = createJSONObject(task);
//        } catch (JSONException e) {
//            e.printStackTrace();
//            throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
//        }
//        return result;
//    }
//    
//    @POST
//    @Consumes( { MediaType.APPLICATION_FORM_URLENCODED })
//    @Produces( { MediaType.APPLICATION_JSON })
//    public JSONObject check(MultivaluedMap<String, String> formData){
//    	JSONObject obj = new JSONObject();
//    	Map<Object, Object> requestData;
//    	List<CheckItem> checkItem;
//    	CheckResult chkRes;
//    	try{
//    		requestData = TaskManager.getInstance().
//    											pretreatRequestData(formData);
//    		checkItem = BaseResourceImpl.getInstance().
//    											getCheckResource(requestData);
//    		chkRes = TaskManager.getInstance().
//    										checkRequestData(requestData, checkItem, null);
//        	if(chkRes != null){
//    			obj.put("ERROR_MSG", chkRes.toString());
//        	}
//    	}catch (Exception e) {
//            e.printStackTrace();
//            throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
//        }
//    	return obj;
//    }
//    
//    @Path(ITEM_PATH)
//    @PUT
//    @Consumes( { MediaType.APPLICATION_JSON })
//    @Produces( { MediaType.APPLICATION_JSON })
//    public JSONObject updateTask(JSONObject task, @Context UriInfo uriInfo,
//            @Context LinkBuilders linksBuilders) {
//        return null;
//    }
//
//    @Path(ITEM_PATH)
//    @DELETE
//    @Produces( { MediaType.APPLICATION_JSON })
//    public JSONObject deleteTask(@Context LinkBuilders link, @Context UriInfo uri,
//            @PathParam(TASK) String taskId) {
//        return null;
//    }
//
//    private JSONObject createJSONObject(Task task) throws JSONException {
//        JSONObject obj = new JSONObject();
//        obj.put("name", task.getName());
//        obj.put("notes", task.getNotes());
//        obj.put("dueDate", task.getDueDate());
//        obj.put("complete", task.isComplete());
//        obj.put("id", task.getId());
//        return obj;
//    }
//}